#!/usr/local/bin/lua
-- function f(...)
--     a = select(3,...)  -->从第三个位置开始，变量 a 对应右边变量列表的第一个参数
--     print (a)
--     print (select(3,...)) -->打印所有列表参数
-- end

-- f(0,1,2,3,4,5)

-- x = 10       -- 全局变量
-- local i = 1  -- 对于该代码段来说是局部的, 类似于C语言中的static全局变量
 
-- while i <= x do
--     local x = i * 2  -- 局部变量x
--     print(x)
--     i = i + 1
-- end
 
-- if i < 20 then
--     local x          -- 局部变量x
--     x = 20
--     print(x + 2)
-- else
--     print(x)
-- end
 
-- print(x)  -- 操作全局的x

print("result is "..3)
 
-- 3与后面的..必须要有空格
print("result is "..3 .." dollar")

-- </html>之后会两次换行, 一次为page的末尾有换行, 另一次为print()的换行
page = [[
<html>
<head>
    <title> An HTML Page</tile>
</head>
<body>
    <a href="http://www.lua.org">Lua</a>
</body>
</html>
]]
 
print(page)

string = [===[
    Hello
    -- [[ 注释 ]]
    World
]===]
 
print(string)

data1 = "\x00\x01\x02\x0A\x0B"
 
-- -- [[
--     这种声明方式是错误的
--     data1 = "\x00\x01\x02
--          \x0A\x0B"
-- ]]
 
-- \z会忽略\x02后面的所有换行符和空白符
data2 = "\x00\x01\x02\z
         \x0A\x0B"


-- -- 加载初始化文件，确保模块路径正确
-- require('init')

-- -- 加载 luasql.mysql 模块
-- local luasql = require('luasql.mysql')

-- -- 创建环境对象
-- local env = luasql.mysql()

-- -- 连接数据库
-- local conn, err = env:connect("user", "root", "hdp123456", "127.0.0.1", 3306)
-- if not conn then
--     print("Error connecting to database: " .. err)
--     return
-- end

-- -- 设置数据库的编码格式
-- conn:execute("SET NAMES UTF8")

-- -- 执行数据库操作
-- local cur = conn:execute("select * from users")

-- -- 获取一行数据
-- local row = cur:fetch({}, "a")


-- -- 遍历结果集并写入文件
-- while row do
--     local var = string.format("%d %s %d\n", row.id, row.ip, row.count)
--     print(var)
--     row = cur:fetch(row, "a")
-- end

-- conn:close() -- 关闭数据库连接
-- env:close() -- 关闭数据库环境


function getPageVisitedCount(ip)
    -- 模拟返回值
    return 123, 456
end

function generate_http_response(ip)
    local visitor_number, visited_count = getPageVisitedCount(ip)
    local html_content = "<p>Page Request Count: <!-- PAGE_REQUEST_COUNT --></p><p>User Insert Order: <!-- USER_INSERT_ORDER --></p>"

    print("Original HTML content:")
    print(html_content)
    print("Type of html_content:", type(html_content))  

    print("visited_count: ".. tostring(visited_count))
    print("visitor_number: ".. tostring(visitor_number))

    -- 替换占位符
    local pattern1 = "<!%-%- PAGE_REQUEST_COUNT %-%->"
    local pattern2 = "<!%-%- USER_INSERT_ORDER %-%->"
    local new_content = string.gsub(html_content, pattern1, tostring(visited_count))
    print("After first substitution:")
    print(new_content)  

    new_content = string.gsub(new_content, pattern2, tostring(visitor_number))
    print("After second substitution:")
    print(new_content)  

    return new_content
end

-- 测试
local ip = "192.168.1.1"
local response = generate_http_response(ip)
print("Final HTTP response:")
print(response)